{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "linear-kinase",
   "metadata": {},
   "source": [
    "# 数据处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "limiting-boating",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要模块\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "import pickle\n",
    "import gc\n",
    "import datetime\n",
    "import time\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "noted-reality",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 可以发现不管是week，还是month ，all数据，字典都是这种结构，所以可以写成函数的形式\n",
    "def data_process(data):\n",
    "    Users, Volume, Transactions = [], [], []\n",
    "    Position = data['xaxis']\n",
    "    data = data['series']\n",
    "    for i in data:\n",
    "        if i['name'] == 'Users':\n",
    "            Users.extend(i['data'])\n",
    "        elif i['name'] == 'Volume':\n",
    "            Volume.extend(i['data'])\n",
    "        else:\n",
    "            Transactions.extend(i['data'])\n",
    "    \n",
    "    return Users, Volume, Transactions, Position\n",
    "\n",
    "# 对日期进行排序\n",
    "def get_rank_data(users, volumn, transaction, position):\n",
    "    dic = dict(zip(position, range(len(position))))\n",
    "    p = []\n",
    "    for i in sorted(dic):\n",
    "        p.append(dic[i])\n",
    "    users = np.asarray(users)[p].tolist()\n",
    "    volumn = np.asarray(volumn)[p].tolist()\n",
    "    transaction = np.asarray(transaction)[p].tolist()\n",
    "\n",
    "    return users, volumn, transaction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "infrared-statement",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据读取和处理\n",
    "week = pickle.load(open('./data/week.pkl', 'rb'))\n",
    "month = pickle.load(open('./data/month.pkl', 'rb'))\n",
    "all_ = pickle.load(open('./data/all_.pkl', 'rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "heated-withdrawal",
   "metadata": {},
   "outputs": [],
   "source": [
    "week_users, week_volume, week_transactions, week_position = data_process(week)\n",
    "month_users, month_volume, month_transactions, month_position = data_process(month)\n",
    "all_users, all_volume, all_transactions, all_position = data_process(all_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "tamil-standard",
   "metadata": {},
   "outputs": [],
   "source": [
    "week_users, week_volume, week_transactions = get_rank_data(week_users, week_volume, week_transactions, week_position)\n",
    "month_users, month_volume, month_transactions = get_rank_data(month_users, month_volume, month_transactions, month_position)\n",
    "all_users, all_volume, all_transactions = get_rank_data(all_users, all_volume, all_transactions, all_position)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "starting-italy",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "100"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 没有用的变量可以删掉，避免占用内存\n",
    "del week, month, all_, week_position, month_position, all_position; gc.collect()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "sublime-meditation",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 因为没有时间，所以这里针对数据创建时间\n",
    "date = pd.date_range('2019-9-17', '2021-3-30', freq='D') # 生成30号一共561个数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "consolidated-banana",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 创建pandas对象\n",
    "df = pd.DataFrame({\n",
    "    'transactions':all_transactions,\n",
    "    'date':date\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "published-indicator",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df.set_index(df.date)\n",
    "del df['date']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "informal-forge",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='date'>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df.plot() # 粗略进行画图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "color-determination",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = df.sort_index(ascending=True, axis=0) # 按时间进行排序，虽然数据前面已经处理好了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "fifteen-treasure",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='date'>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "fitting-marina",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 训练集和测试集的划分\n",
    "train, test = train_test_split(data, test_size=0.2, shuffle=False) # 因为默认shuffle是打乱，这里设置为False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "christian-disposition",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构造数据集\n",
    "scaler = MinMaxScaler(feature_range=(0, 1)) # 进行归一化\n",
    "scaler_train_data = scaler.fit_transform(train.values)\n",
    "scaler_test_data = scaler.fit_transform(test.values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "developed-contribution",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7faed369e610>]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAApsElEQVR4nO3deXydZZ338c/vrNnbpEmb7gstLS3IVjZBpyxC0dG6i4igow8uoM6MGzrzuI+DjzrjhiCDyDgqHX3EEaXIw1ZWoS1b6UpT6JKuSZumWU/Ocj1/nCXnJGmW9iQ5y/f9sq/k3OdOcuXm5be//u7rvi5zziEiIvnPM94DEBGR7FCgi4gUCAW6iEiBUKCLiBQIBbqISIHwjdcPrq2tdXPmzBmvHy8ikpeee+65Zudc3UDvjVugz5kzh3Xr1o3XjxcRyUtmtvNY76nlIiJSIBToIiIFQoEuIlIgFOgiIgVCgS4iUiCGDHQzu9PMDprZhmO8b2b2IzNrMLP1ZnZW9ocpIiJDGU6FfhewfJD3rwQWJP5cD9x64sMSEZGRGjLQnXOPA4cHOWUF8EsX9www0cymZmuAIlJ8Dnf0sOrlfeM9jLyTjR76dGB32uvGxLF+zOx6M1tnZuuampqy8KNFpBB97L/W8clfP8/Btu7xHkpeyUag2wDHBtw1wzl3u3NuqXNuaV3dgE+uiojQ2NIFQDiqDXhGIhuB3gjMTHs9A9ibhe8rIkVqoCpRhpaNQL8XuDYx2+V8oNU5p+aXiBw31eXHZ8jFuczsbmAZUGtmjcBXAT+Ac+42YBXwZqAB6AQ+PFqDFZHiokp9ZIYMdOfc+4d43wE3ZG1EIiJyXPSkqIhIgVCgi4gUCAW6iOQs3RwdGQW6iOQc3Qw9Pgp0EZECoUAXESkQCnQRkQKhQBcRKRAKdBHJOcnZLfHnFmW4FOgikrOU5yOjQBeRnJOctqhAHxkFuojkLKdHi0ZEgS4iOUsV+sgo0EUkZynPR0aBLiI5S7NcRkaBLiI5S3E+Mgp0EclZKtBHRoEuIjnHLD5xUS2XkVGgi0jOUpyPjAJdRHKWCvSRUaCLSM5Jtlr0YNHIKNBFJGepQh8ZBbqI5CwF+sgo0EUkZ6nlMjIKdBHJOb3TFsd5IHlGgS4iOUuBPjIKdBHJWWq5jIwCXURylir0kVGgi0jOUp6PjAJdRHKW1nIZGQW6iOQsxfnIDCvQzWy5mW01swYzu2mA9yeY2Z/M7CUz22hmH87+UEWk2KhCH5khA93MvMAtwJXAYuD9Zra4z2k3AJucc6cDy4Dvm1kgy2MVkSKjPB+Z4VTo5wINzrlXnXM9wEpgRZ9zHFBp8acBKoDDQCSrIxWRoqM8H5nhBPp0YHfa68bEsXQ/AU4B9gIvA59xzsX6fiMzu97M1pnZuqampuMcsogUC1XoIzOcQLcBjvW9zFcALwLTgDOAn5hZVb8vcu5259xS59zSurq6EQ5VRIqNeugjM5xAbwRmpr2eQbwST/dh4B4X1wC8BizKzhBFpFgpzkdmOIG+FlhgZnMTNzqvAu7tc84u4FIAM5sCLARezeZARaT45FuB/qV7XuanqxvG7ef7hjrBORcxsxuBBwAvcKdzbqOZfTzx/m3AN4G7zOxl4i2aLzrnmkdx3CJSBPKt5XL3ml0AfHLZ/HH5+UMGOoBzbhWwqs+x29I+3wtcnt2hiUixy684H396UlREclaeFejjToEuIjkrn5bPzYX2kAJdRHJWDmTksIUi/R69GXMKdBHJWXmU53T2RMd7CAp0EcldudDGGK7OnvFf7USBLiI5K4/yXBW6iMhg8ummqAJdRGQQeVWhh9RyERE5prwKdFXoIiLHlkd5TkfaTdHxupmrQBeRnJVPs1y60ir0u57eMS5jUKCLSM7KnziHjrRA//qfNtHaFR7zMSjQRSTnWGJbnfyq0DNvisZiYz92BbqI5Kw8ynO6w5mP/vdEx34pAAW6iOSsPMpzwrE+gT4Oa7so0EUk5yQr83yq0MORzMGqQhcRSZNPT4qG+wR439djQYEuIjkrryr0qFouIiLHlEd53q/FogpdRIT8nLYYjmaOdTw2vFCgi0jOyqM8JxzpW6FrHrqISEpe3xRVhS4i0iufKvS+PXRNWxQRSZNPgR6Oxjhr1kTOm1uTej3WFOgikrPyKM8JRx1lAR/fe8/pgG6KiohkyK9ZLjH8XiPg86RejzUFuojknN5pi+M7jpHoicTwez0EvJ7U67GmQBeRnJNayyWPmi7haAy/z4NfFbqISH/5VKGHo45AWoWueegiImnyKM9TPXS/N94vSt4UfebVQ7SHIoN9adYMK9DNbLmZbTWzBjO76RjnLDOzF81so5k9lt1hikgxyq8KPd5DNzMCXg/haIzWrjBX3f4Mn/z182MyBt9QJ5iZF7gFeBPQCKw1s3udc5vSzpkI/BRY7pzbZWaTR2m8IlJE8qmHnrwpCuD3Gj2RWOrG6F+3N4/JGIZToZ8LNDjnXnXO9QArgRV9zrkauMc5twvAOXcwu8MUkWKUXxW6S01Z9PviFXryadGx6qcPJ9CnA7vTXjcmjqU7Gag2s9Vm9pyZXTvQNzKz681snZmta2pqOr4Ri0jBy8/VFmOp/nnA68mo0MfKcALdBjjW9yr7gLOBtwBXAP/bzE7u90XO3e6cW+qcW1pXVzfiwYpIccmXOI/FHJGYS2u5eOiJxsZ86uKQPXTiFfnMtNczgL0DnNPsnOsAOszsceB04JWsjFJEilK+FOjJDaKTgR70eQhHXUaF7pzDbKD6OHuGU6GvBRaY2VwzCwBXAff2OeePwBvMzGdmZcB5wObsDlVEik2+tFySPfJAeoUeiWas59I2BlMXh6zQnXMRM7sReADwAnc65zaa2ccT79/mnNtsZn8B1gMx4A7n3IbRHLiIFL78iPPetc9TPfQBKvSmthBVJf5RHcdwWi4451YBq/ocu63P6+8C383e0ESk2OVJgZ7qlScf+y/xe+jsiWSsid7S0QOjfOtQT4qKSM7KkzxPBXeyh15Z4qetO5Kxa9Ghjp5RH4cCXURyVr720KtKfLR1D1ChjzIFuojkrDzJcyJ9KvSqUj9Hu8MZPfTDnQp0ESli+fLof6jPTdGqEj9Hu8KEItHUOYfbFegiUsTypUJPBneJ3wtAVamPmIOWzjAQb8WoQheRopYneU53OF6hpwI9MT1x1+FOAKZMCHJYPXQRKWb5UqF3h5MVem8PHeA3z+4CoL6qRDdFRaS45XoP/T23Pc1tj21PVehBX2aFnjShNJA6ZzQp0EUk51hiTcBcr9DX7mjh5vu3pPXQkxV65jObJX7PmCzUpUAXkZyVL/PQ+/bQywKZgR5IrL442hToIpKz8iTPUz30YOLR/+kTSzPe93s9RMZgkwsFuojknGTvPE/yPDUPPVmhlwa8rPnypan3fV5Ty0VEilu+VujQO9MFeje8GG0KdBHJWbk8yyUW6x1bdyRKwOfJ2MAiWa1DcjldBbqIFLFcrtCjaYMLhWOU+I4dp36vqYcuIsUpmZW5PMslPaBDkWhGRd6X3+shEnMZVf1oUKCLSM5JBfr4DmNQkVhvC6U7HBsy0KF379HRMqwdi0RExkMOF+hE03vo4WjGDdGkn1+3lGjMseNQBxBfNz04iqmrCl1Eck6y1ZLLN0XDGS2XgSv0S0+ZwuVL6lMVemSUb4wq0EUk5ySjMp8q9ORj/wNJBvpoT11UoItIzsm3HnpXOJpamGsgyY0vwqM800WBLiI5J/WkaA4nevosl7buyLAq9PRNo0eDAl1Eck5eTFtMa7m0doUJDmeWi1ouIlJsXJ+PuSjaN9AHfbAoGehquYhIkUnNchmDCv1gWzfvuvVpGls6R/R16dV2zzFmuSQFfMkeuip0ESkyvS2X0f9Zv3x6J8/tbGHlmt3HPCcac2zY09rvWLqSQW6K+jxquYhIkRrLlkvyoZ/p1b1rmO9v7eaXf92Rev3gpgP87Y+fZGfiXMjsoQMENW1RRKS/3pbL6P+sZKCnP/Tzd3et5St/3MjBo90AHE5s8Pxac1qg9wnnwSr0ZMtl096j2Rn0MSjQRSTn9Fboo5/oe4/EQ7ujJ9p7rLUL6K2oO3siADS2dKXO6ddyGUaF/q37NrNux+EsjHpgCnQRyTlj2UNP6gxFUp/3JOaLJzeuSH7cc6Q30Pu2XAa7KZrsoQP81zM7U39BZJsCXURyzljOcomkqvDeCj25pVzyWPLjYBX6YNMWky0XgD++uJeb799ygqMe2LAC3cyWm9lWM2sws5sGOe8cM4ua2buzN0QRKTZjeVM0OTc8veWSDOtkkHclKvRNe1u5+f4t9ERi/WasDGf53KRLFk0+8YEPYMiFHM3MC9wCvAloBNaa2b3OuU0DnPcd4IHRGKiIFJExbLkkg7lrgDZIMsi7EsG+vamD7Y9t54yZE/qNbTg99KQLTpp0IkM+puFU6OcCDc65V51zPcBKYMUA530K+D1wMIvjE5EiNFY3RWMxl+qFp1foSV19KvSkoM/bf9riYPPQvb0tlzuuXTrouSdiOIE+HUifcd+YOJZiZtOBdwC3DfaNzOx6M1tnZuuamppGOlYRKRJjNW0xfQehZHin9+379tCTQpFYxmqLMPg89EBahX7Z4inHP+AhDCfQbYBjfS/zD4AvOuf6/xWX/kXO3e6cW+qcW1pXVzfMIYpIsUkGzChvwZmxtkpHouWyemtvsdmVNsvF0pKwPRTpt+nzSHroo2U4myE1AjPTXs8A9vY5Zymw0uK/cS3wZjOLOOf+JxuDFJHiEnNjc1s0fTnbzlA8vD9819rUsWRfvbMnyqyaMnYeiq/30hGK9JvVMpzFuQY7JxuGE+hrgQVmNhfYA1wFXJ1+gnNubvJzM7sL+LPCXESO11jNQ0+fqdIZjuCcI+jzUD+hhJ2HOntnufREmVtbngr09lAEj8ef8b0GX5zLw+cuP5k3La4fhd+i15B/XTjnIsCNxGevbAZ+65zbaGYfN7OPj+roRKQojdUWdOFETyfg9dAZitIWihCKxPjAebMI+DwZN0UrS/w8+rllQDzQoyOYtghw4yULWFhfmf1fIs2w9p92zq0CVvU5NuANUOfch058WCJS1FJb0I1Ny6Wq1E9ze4g7n3wNgPoJpZQFvBnTFsv8XubWllNd5ufW1du5YF7m1MPRbqcMx/iPQESkj7Hagi7ZcnnnWfGJe7c82gBAfVUJZX5v2iyXCKWBeAXuTTzG/9dXD2V8r6Eq9LGgQBeRnDNWm0QnF986a1Y1bzy5LjXrZeqEEkoD3lTLpTscSwV6S2fPgN+rRBW6iEh/vdMWR7nlkgjwgM+orQgAYAaTq4LxQA9HiURj9ERjlCYq8L5ruCT5xmhq4mDGfwQiIn24MSrRky0Xv9dDXUUQgCmVJQR9Xmorgmzd35ZaYXFSIvD7+ofLTqYiOKzbkaNOgS4iOWesFudK3hT1ez3UJgJ9Yll8OuIHz5/NniNd/OjheF/9pLqKAb/HZy5bwIavXzHKIx0eBbqI5Jzeeeij3HJJtE/8Xg+1lfEKPNkrv2TRZCaVB/j9840AzKsrB+BXHzmPb65YMqrjOl4KdBHJWWNVoQe8HiqD8cq8LBHoZsa5c2sAqCzxpVoyFy2o5YMXzBnlkR0fBbqI5JT0qnyspi36fZbqkZ89qzr1/hsWxNecOmVqFWYDLWuVW3Kjky8ikpA+iWSspi36vR4Wzaritx+7gLNn9wb6e5fO4NTpVcytLe/3tZ+/YiGPvZJbq8Yq0EUkp6RX6Nmetrh660EaW7q45vzZQNq0xcSUw2SLJcnn9fC6GRMH/F43XDyfGy6en9XxnSgFuojkFHfMFyfuQ7+Ir6TYG+jxCj19A4p8ph66iOQUl9FyGZ2my9HuMAC7DsdXTxyr9cpHmyp0Eckp6SE+WjdFdx3qpLk9xK2rtwMKdBGRUZFRoY9SoO841MG2A+2p14ECCfTC+C1EpCBlu+Xi9cR75TuaOzK2lPMXSA9dFbqI5JTRqtCjMZdaWOuphkM0NPVW6Mmgz3cKdBHJKelVeTY3iW5L3AiF/muZ58NDQ8OhlouI5BQ3SvMWj3ZFsva9cpUCXURySnqEn0jLxTlHR6g3xFu7wgOed+Wpo7tx81hSoItITkl/OvRE6vOfrt7Okq8+QEtHfIeh5NzzysTa5fVVJTz75Uu59ZqzT+Cn5BYFuojklMyboscf6X94YQ8AB9q6eWFXC7c//ioAcxLrsly8aDJTqkqOf6A5SDdFRSS3ZGlxLl9i5kpPJMY3/ryJF3Yd4VOXzOdIZ5iX97QyodR/YuPMQarQRSSnZOtJUU9i5kpze4gNe1r5xLKT+OzlC1NPhSrQRURGWXqID3e1Recc97+8L7XYFvTOLX9iWzPhqOOcOdUZ3zPgK7z4K7zfSETy2vEU5atfaeITv36eHz60LXXMkwj0pxvic87PmBkP9GRfvjBmnmdSoItITjmeHYuOdMZnsiRXTwRIPs2/9UAbtRVBasrjOxIlH1YqkIdDMyjQRSSnZMxDH2a97vXEoyya9mipJ+3pz5OnVKQ+v+rcmQBcesqUExhlbtIsFxHJKcezlos3Ed6RWG8PPRTp/XzB5N5AXzJtAjtufsuJDTJHqUIXkZySXpWn3+RMt2FPK3Nuuo+Ne1sB6IlGAUg/vaOn9ynRRVOrRmGkuUeBLiK5Ja0qP9bj+g9tPgDA79Y1AtDVE0/yaFqF3hmKpj7vu1dooRpWoJvZcjPbamYNZnbTAO9/wMzWJ/48bWanZ3+oIlIM0rssx1pQq7MnHta7EzdBOxPV+LaD7exr7QIyK/R5iadDC92QgW5mXuAW4EpgMfB+M1vc57TXgL9xzr0O+CZwe7YHKiLFITlPvDLoO2aF/lpzBwAvNR4BoDscD/jGli4u+NdHcM7R2RNlRnUp33nXaQWzPO5QhlOhnws0OOdedc71ACuBFeknOOeeds61JF4+A8zI7jBFpFgkb4ROKPPTFY7y5LZmHt1yMOOcZKA3t/cQikRTFXvS0a4I0Zjj6vNm8b5zZo3JuHPBcAJ9OrA77XVj4tixfAS4f6A3zOx6M1tnZuuampqGP0oRKRrJlsvEsvij+df8/Fk+fNfaVIg759h9uDP16P5F33mUHYc6Mr7Hb9bsAqDM7x2bQeeI4QT6QP9WGXAykZldTDzQvzjQ+865251zS51zS+vq6oY/ShEpGskHiyaWBjKO//mlvQB0haOEIjGWTIvPXGlqC7Hq5f0Z537nL1vweoyLFhRXzgxnHnojMDPt9Qxgb9+TzOx1wB3Alc65Q33fFxEZjvSWS7rm9hAALZ3xvvqi+iqe3t4/av7nhgtZ89oh5k+uYH7a/PNiMJxAXwssMLO5wB7gKuDq9BPMbBZwD/BB59wrWR+liBSNrsQNzqlpa5XPqyunuT3+eH9yw4pTplYO+PWL6is5Y+bE0R1kjhoy0J1zETO7EXgA8AJ3Ouc2mtnHE+/fBnwFmAT8NHE3OeKcWzp6wxaRQtWe2DZu6sTS1LHaiiBNiQr9cCLQZ0/KnIo4r7ac7733dEqKrG+ebliP/jvnVgGr+hy7Le3zjwIfze7QRKQYJR8ImlEdD/T3LZ1JeyjC5v1HAWhJLMRVU+7nn99yCt+6bzMA9RNKOGtW9TiMOHfoSVERySnJCn1GdSkP/eMb+Zd3nEptRYBDfVou1WUBPvqGeangLwsUb2WepMW5RCSnJJ/6LA/4Uvt/TqoI0toVpicSS90UTU5brCrxA11F3WpJUqCLSE7pSFTo5cHeeKqtCALwqbuf54GN8XVcfImt5CpK4udNriysDZ+PhwJdRHKCc47frWtMzWapSAv0c+fGe+MPbDyA32v8zcm988uT0xlPnV4cKyoORoEuMk5uvn8L58+rYdnCyeM9lJyw+pUmvvD79UB8N6ESf+8tvvmTK3nnmdPZ3tTOPZ+8MLVfKPQu0LVk2oSxHXAO0k1RkXFy22Pb+dAv1o73MHLGrkO928eVB3z9FtT6/ntP5w99whzgwvm1AJxUVxwrKg5GFbrIOAhFeheTisVcakPjYrYlMS0RoCzY/wanmTHQoom3XH0Whzt6Uj31YqZAFxkH7d29a3U3NLVz8pSBn3osBgfbunlw0wHuXtO7BmBZYPjRVB70ZdxALWb6K01kHCTnWgNsO9A+jiM5cVv2H+W3a3cPfeIAGg62c+n3H+Of/rCBRfWVrDhjGtDbF5eR0V9rIuOgLa1C77v067G/JsxPHmlgxRnTWTxt8Bkdn777BSZVBPjqW5ec0DiHY/kPngBgxZnTCPq8dPZEhl1h33z/Fjxm/Py6pVy8cDIH20L88cW9RGLD3B1aMqhCFxkHGYGeWOf7E796jp88su2YX/ONP23iZ4+/ys+ffG3Q7x2KRPnLxv08v+tIVsY6mOTYIX5Tc39rN4u/8gBfu3cj3eFoahNngFcOtGXcO9jf2s0jWw5w9XmzuPSUKXg8Rv2E+FzyusrgqI+9EKlCFxkHbd3xpx3LAl52HuqkIxThgY37aW4PceMlCwb8mg174zcNh6roX25spScSo7ktlN1B99EdjnLV7c+kXr/p3x9PfX7X0zu46+kdAPzl79/Ak9ua+dZ9m3nnWdP55opT+fmTr/FvD8YXZn37GZn75TzzpUvxe3WT+Hgo0EXGQbKHftr0CWw72M5Lu48Qc7Dz0MC9Y+ccOxNBvnV/G865Y+6TuWbHYSD+wM1g552o3z3XyP6j3fzwqjP4zMoXM97ze41wNN42ufKHT+Ac1FeVcM/ze7jn+T0Z5y7os2Z5skqXkVPLRWQcJIP7slOmcLijh18kqtmDbSE6eyJ0h6N0hCKpdU2a2kJ09kRZVF9JeyhCY0sXz+08zK2rtxPt029e+1o80EORGKtfaeJ//XIdLze2MpSVa3bx2CvD2xry7jW7+OofN3DOnGredvq0fu8/8tllPPb5ZXxi2Un4PMYHz5/Nrz563oDfS1M2s0cVusgYe3jzAX74cLxX/vYzp/Odv2zhwU0HUu//5tldqSVhZ9WU8fgXLmZH4i+At54+jS37t/LC7iP8bt1untjWTCQa41OXxts00Zhj3c4WKoM+2kIRPv2bF2gLRZhRXcppMwZ/kvL7D77CvNryjMfq0/123W5+9PA2rjl/Nt97YCsXzq/ltmvOxsx46B/fSGWJn/O+/TAAM2vKAPji8kV8/vKFeDyW2loO4Ll/voy71+zi7Nk1x3MJ5RhUoYuMsRfSblbWVQa54KRJAKk9MpNhDrDrcCcb97Zy3/r4ro9vO30apX4vz+9sSd1YfXr7ITbvO8r+1m4e2nyAtu4Ily+pB6At0dpZP0SF3hOJ0dweYtPeo8QGmGHy2CtN/Mfjr9LY0sXN928hEnN8cfmi1Pzv+ZMrmVJVwsf+Zh7fXJE5syZZgZsZFy+sY0Kpn0kVQW68ZEHqd5fsUIUuMoYi0RiHEut5J1156lSe2NbM+8+dRW1FkJVrd7F6a2/r45O/fp6dhzr50OvnMLOmjDNmTuSv2w9xqCN+03Pz/qNc+cMn8HqMBZMrWDC5gmsvmM3vn28E4otcPbezha//aeMxpzEeONqNc/G/AHa3dGbsBrTrUCfX3bkGgLNnV7PrcCeTygOpv4DSfenKUwb9/e+47px+LSLJHgW6yChpbg/xyJaDvOfsGXzv/22lpTOcmKp3EIDPX7EQgLeePpUNe1u58tR6JlUEWX5qPaFIlNeaO7jrqR2sXLubWTVlfGF5/Py3nTGNL93zMgBTqoIcOBoP9mjMsWV/G19YvpBZiZYHwCeWncR3H9jKL57awRtPruPihZNp6eihujwAxGerfPXejanzN+49mgp05xy/fnZn6r3LF0/ho2+YRzR2fDdbvR7rtxaLZI9aLiJZcu9Le/nbHz9BJBrDOcen736BL/zf9Ww72M4tj27nN8/uSoX5jOpSbrh4PgCVJX6+/Y7TmFTRO/c66POyqL6Kf3jTyXzu8pP53ccvSD2s8+6zZzB7UjywL19c328c582dRHV5gBsvnk95wMt1r5/Dtn+5kqoSHw9uOsBfNuzjzG8+yNPbm/nvtbv43gNbU+MC2LAn3p7picRYuXY3P3v81dR7c2rL8XqMgE/RkYtUoYtkyU2/X09nT5QnG5r51TM7eXr7IQBWbz3Y79w3HuPGY19Tqkr6zUv3ez187vKFfOruF1hxxjT+65neCroy6OO06fGbn5+7YiF/f9mC1KJVS6ZNYOPeo+w90gXA1f/xbL+fN7OmlJf3tBKNOT7yn2t5YlszJX4PVyyp548v7s2o/CX3KNBFsqSuMsjOQ518+u4XOJr2JOi3V23JOG/Nly9lQpn/hH7WW0+fxjlzaqifUMLsSWXsPNTJ7z9xAQvrqzKq5/QVCJdMq+KOJ18bsLqeP7mCuoog9RNK+MMLe/j0yhd4YlszAB96/Vw+d/nJXHvBbE6Zqk0kcpn+3SSSBd3hKI0t8cr3aHeEmvIAa758Kd96+6kZj7F7PcbkqhKCvhPf/zL5AM4p9fGQXTJtQsYuP32dNTu+609PJMZdHz6H337sgtR731xxKndffz7vOmsGAPet3wfATVcuSlX5mmKY+1Shi5yA7nCUXz+7i9NnTCAac/zgfWfQ3B7iytOmMrmqhGvOn80HzpvF0e4I3/jTJt53zsysj+HdZ8+gpiIw5CbJy5fU889vOQXn6LdL0ilT48v3XrSgln+47GT+/aFXqAj6+MhFc/FrnfG8oUAXSXPf+n08suUg33336475BONTDc3sPtzJVefO4pZHG/jxIw2p3XJOmzGBk+oyH2U3MyaU+vn+e08flTFftngKly2eMuR5Ho/x0TfMyzj2jRVLuG/9PiaWBVLHFtbHw/3C+ZMU5nlGgS6S8OS2Zj6z8gUiMceHXj+HEr+HUCTGkmlVGVP0PnBH/GbiO8+awd1rdgGwvamDoM/DnEn5tQ3atRfM4doL5mQcO23GBLwe47JThv5LQnKLAl2E+Hzrm+5Zz8yaMl5r7uCtP3ky9d533/065tWVc9/6/TQ09W5G8d/rdtPc3sObFk/hwU0HCEViBTHHevrEUlZ/bhkzqkvHeygyQvr3lAiw+3AXjS1d/N2FczhnTjXVZf7UI+y/e66Rd936V+586jUeT1u86uv3bqQy6OMH7zuDgNfDNefPGq/hZ93MmrJRW6VRRo8qdClq0ZjDOce/rNoEwPnzJvGepTPxeQyf18NjrzTx0Ob4PPKfffBsFtVXcuvq7axcu5tIzHHt62dTHvSx4etXaA1vGXcKdClaP3xoG7c+1sDE0gD7j3azqL6S+ZMrMirTM2ZO5KHNB7lofi1XJBa8uvldr+O8eTWs3dHC9W88CUBPTkpOUKBLwXu1qZ07nnyNZSfXMaWqhPmTK3iqoZl/fyi+Y87+cDcXzp/Erz5yXr82wwcvmENNeZC3n5m55vc7zpzBO86cMWa/g8hwKNBHgXOO7nCM0sCJPzwiJ+7bq7bw0OYD/ObZXRnHp1QFeeSzy9h5qJPpE0sH7BlPKPVz9XmF0xuXwjasfyea2XIz22pmDWZ20wDvm5n9KPH+ejM7K/tDzR8/fHgbp3zlL3SEIkOfLEC8l93SZ1nZbOiJxFib2JJt9qQyLlk0mQWTK/jqWxdz740XUR70sXha1Qk/ii+SC4as0M3MC9wCvAloBNaa2b3OuU1pp10JLEj8OQ+4NfExZx1s62ZHcyfTq0uZUhnE5/XQE4nh99oJ393/wUPx3Wh+/EgDN1x8Ekc6w7R2hVkyrYrOnigb9rTi8xqzauJzllu7wtSUB2jtCjNnUu/sgq6eKB09ESaW+lNrcsRiDrP4wyqRaO80OTOjPRShPODlUEcPT28/xJHOHs6aVc38yRV4zIg5h9/rYcOeVvxeD0c6e6ipCDBtYilVJb2BFo052rrD+L0egj4PrzZ3EIk65k+uYHtTO16PEfR5aG4PMXVCKeUBH1WlPg539HC4o4e6yiDtoQhNbSEW1VfhcAR9Xva0dNHY0slT25s51N7D2bOrOX/eJOonlPDZ377Eqpf3ccd1Szl7djX7W7t5qqGZrnCMc+fWMKUqyIY9rexr7SYacyxbOJlXm9qZNrGUCaV+yoM+XtzdwnlzJ2EGHjNC4RgPbNxPa1eYO65dyrKFdfi8nlHdZ1NkPFn6tlADnmB2AfA159wViddfAnDO/WvaOT8DVjvn7k683gosc87tO9b3Xbp0qVu3bt2IB/zoloN87U8b8Zil/o+bGE/8Y/JEl/Eh9X57KEokFqMjFEltYuvzGJUlPlo648FqQGdPlKkTSlJbZ7nEN3OJ7xX/CA4X/5h2GfckVrPrq7YiSHP74DuxV5f5icQcnT1RIB6uvsRypdGYIxyN4TGjNOClPRTB7/EQ9HvwmNHaFabU76UrHM34nh6LL9IUi8XHPdAGA1UlPsLR+M9qO45/WXgMjrVvgRl4zYgkTkh/nfxvmK1ND8oCXrrD0YyxlPq9rP/a5XrqUQqCmT3nnFs60HvD6aFPB3anvW6kf/U90DnTgYxAN7PrgesBZs06vr7kxDI/Z86cSMxBzDlizmEkqq3MD6kqrPc1BLwezKC6PMDS2TU0t4dobOmkua2HaRNL2XukC5/XCPq88V1cSHz/+P8ws8THzNfx9+N/yQR8HmbXlLG7pZPKEj8zq8s43BFi64F2TqorZ/akMoI+L/tau4lEY9SUBzjYFkpVwwGvh9KAl5hzTK0qYf/REN3hKEG/h4A3HuztoQilAS89kVgqqKvLArR1R5hY5sdjsPzUerbub2frgTYOd4Qo9XsJ+rxMrgoSCseYU1tOKBJfVGrfkS78Xg/dkSiTyoNUlviIxhwdPVFm15Th8cDmfW0sqq/E6zGOdIaprQiy41AH4WiMUCRGTVmAsqCXtu4IkWiMyVUlbNp7lKpSP9FYjNk15dRPKGFWTRkVJT427Gnlpd2tdIYjnFRXweWLp/Dw5oM0t4eoLgtQWxlgUX0Vm/YeZcehDubWljOntpzucJTnd7ZwUl0FLZ1hmtq6aekMM6O6lOd3tVBdFsCX+NdFOBrj5CmVCnMpCsOp0N8DXOGc+2ji9QeBc51zn0o75z7gX51zTyZePwx8wTn33LG+7/FW6CIixWywCn04ZUsjkL5E3Axg73GcIyIio2g4gb4WWGBmc80sAFwF3NvnnHuBaxOzXc4HWgfrn4uISPYN2UN3zkXM7EbgAcAL3Omc22hmH0+8fxuwCngz0AB0Ah8evSGLiMhAhvVgkXNuFfHQTj92W9rnDrghu0MTEZGR0K1/EZECoUAXESkQCnQRkQKhQBcRKRBDPlg0aj/YrAnYeZxfXgs0Z3E4hUDXJJOuRyZdj0z5fD1mO+fqBnpj3AL9RJjZumM9KVWsdE0y6Xpk0vXIVKjXQy0XEZECoUAXESkQ+Rrot4/3AHKQrkkmXY9Muh6ZCvJ65GUPXURE+svXCl1ERPpQoIuIFIi8C/ShNqwuRGZ2p5kdNLMNacdqzOxBM9uW+Fid9t6XEtdnq5ldMT6jHj1mNtPMHjWzzWa20cw+kzhelNfEzErMbI2ZvZS4Hl9PHC/K65FkZl4ze8HM/px4XfjXwzmXN3+IL9+7HZgHBICXgMXjPa4x+L3fCJwFbEg79n+AmxKf3wR8J/H54sR1CQJzE9fLO96/Q5avx1TgrMTnlcArid+7KK8J8d0QKxKf+4FngfOL9XqkXZd/BH4D/DnxuuCvR75V6OcCDc65V51zPcBKYMU4j2nUOeceBw73ObwC+M/E5/8JvD3t+ErnXMg59xrxNerPHYtxjhXn3D7n3POJz9uAzcT3sC3Ka+Li2hMv/Yk/jiK9HgBmNgN4C3BH2uGCvx75FujH2oy6GE1xiV2hEh8nJ44X1TUysznAmcSr0qK9Jon2wovAQeBB51xRXw/gB8AXgFjasYK/HvkW6DbAMc27zFQ018jMKoDfA3/vnDs62KkDHCuoa+KcizrnziC+n++5ZnbqIKcX9PUws78FDrpBNqnv+yUDHMvL65Fvga7NqHsdMLOpAImPBxPHi+IamZmfeJj/2jl3T+JwUV8TAOfcEWA1sJzivR4XAm8zsx3E27KXmNmvKILrkW+BPpwNq4vFvcB1ic+vA/6YdvwqMwua2VxgAbBmHMY3aszMgJ8Dm51z/5b2VlFeEzOrM7OJic9LgcuALRTp9XDOfck5N8M5N4d4RjzinLuGYrge431XdqR/iG9G/QrxO9H/NN7jGaPf+W5gHxAmXk18BJgEPAxsS3ysSTv/nxLXZytw5XiPfxSux0XE/0m8Hngx8efNxXpNgNcBLySuxwbgK4njRXk9+lybZfTOcin466FH/0VECkS+tVxEROQYFOgiIgVCgS4iUiAU6CIiBUKBLiJSIBToIiIFQoEuIlIg/j/EwXqPIyupZgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(scaler_train_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "atlantic-building",
   "metadata": {},
   "source": [
    "# 构造训练集和测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "critical-windsor",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(448, 1)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scaler_train_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "crude-withdrawal",
   "metadata": {},
   "outputs": [],
   "source": [
    "window = 7 # 设置时间窗口，构造训练集和标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "alpha-aviation",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构造数据集是为了输入到LSTM中\n",
    "x_train, y_train = [], []\n",
    "# 窗口为30表示，用30长度窗口滑动，前30个样本作为特征，后1个样本作为标签\n",
    "for i in range(window, len(train)):\n",
    "    x_train.append(scaler_train_data[i-window:i, 0])\n",
    "    y_train.append(scaler_train_data[i, 0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "meaningful-equality",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_test, y_test = [], []\n",
    "# 窗口为30表示，用30长度窗口滑动，前30个样本作为特征，后1个样本作为标签\n",
    "for i in range(window, len(test)):\n",
    "    x_test.append(scaler_test_data[i-window:i, 0])\n",
    "    y_test.append(scaler_test_data[i, 0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "complex-painting",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(441, 106)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(x_train), len(x_test) # 训练集数据量和测试集数据量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "nearby-wonder",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((7,), (7,))"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train[0].shape, x_test[0].shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "necessary-anime",
   "metadata": {},
   "source": [
    "# 开始建模"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "suffering-deputy",
   "metadata": {},
   "source": [
    "## 数据类型转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "north-stranger",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "from torch import optim\n",
    "from torch.utils.data import Dataset, DataLoader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "quiet-climate",
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.autograd import Variable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "after-short",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据类型转换成numpy\n",
    "x_train_tensor = torch.tensor(x_train).float()\n",
    "y_train_tensor = torch.tensor(y_train).float()\n",
    "x_test_tensor = torch.tensor(x_test).float()\n",
    "y_test_tensor = torch.tensor(y_test).float()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "square-leonard",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train_tensor = x_train_tensor.reshape(-1, 1, window)\n",
    "y_train_tensor = y_train_tensor.reshape(-1, 1, 1)\n",
    "x_test_tensor = x_test_tensor.reshape(-1, 1, window)\n",
    "y_test_tensor = y_test_tensor.reshape(-1, 1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "acceptable-remedy",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(torch.Size([441, 1, 7]),\n",
       " torch.Size([441, 1, 1]),\n",
       " torch.Size([106, 1, 7]),\n",
       " torch.Size([106, 1, 1]))"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train_tensor.shape, y_train_tensor.shape, x_test_tensor.shape, y_test_tensor.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "interested-methodology",
   "metadata": {},
   "source": [
    "## 开始训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "focused-uniform",
   "metadata": {},
   "outputs": [],
   "source": [
    "class LSTM(nn.Module):\n",
    "    def __init__(self, input_dim=window, mid_dim=1024, num_classes=1, num_layers=2):\n",
    "        super().__init__()\n",
    "        self.lstm = nn.LSTM(input_dim, mid_dim, num_layers) # 表示输入维度为1，中间维度为1024， 由3个lstm链接而成\n",
    "        self.linear = nn.Sequential(\n",
    "                nn.Linear(mid_dim, mid_dim),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(mid_dim, num_classes))\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x, _ = self.lstm(x, None)\n",
    "        s, b, h = x.shape\n",
    "        x = x.view(s*b, h)\n",
    "        x = self.linear(x)\n",
    "        out = x.view(s, b, -1)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "extraordinary-woman",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = LSTM().cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "graduate-orleans",
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.01\n",
    "EPOCHS = 500\n",
    "gamma = 0.5\n",
    "step_size = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "assumed-continuity",
   "metadata": {},
   "outputs": [],
   "source": [
    "criterion = nn.MSELoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.8)\n",
    "scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=step_size, gamma=gamma)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "retained-vietnamese",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'Variable' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-52-b1fd6d602101>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mepoch\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mEPOCHS\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m     \u001b[0mvar_x\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mVariable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_train\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcuda\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      7\u001b[0m     \u001b[0mvar_y\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mVariable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_train\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcuda\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'Variable' is not defined"
     ]
    }
   ],
   "source": [
    "train_loss = []\n",
    "test_loss = []\n",
    "\n",
    "for epoch in range(EPOCHS):\n",
    "    model.train()\n",
    "    var_x = Variable(x_train.cuda())\n",
    "    var_y = Variable(y_train.cuda())\n",
    "    \n",
    "    out = model(var_x)\n",
    "    \n",
    "    loss = criterion(out, var_y)\n",
    "    \n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    if epoch % 50 == 0:\n",
    "        print(f'EPOCH:{epoch},Train Loss:{loss.item():.5f}')\n",
    "        \n",
    "    train_loss.append(loss.item())\n",
    "    model.eval()\n",
    "    with torch.no_grad():\n",
    "        var_tx = Variable(x_test.cuda())\n",
    "        var_ty = Variable(y_test.cuda())\n",
    "        \n",
    "        out = model(var_tx)\n",
    "        loss = criterion(out, var_ty)\n",
    "        if epoch % 50 == 0:\n",
    "            print(f'Test Loss:{loss.item():.5f}')\n",
    "            \n",
    "        test_loss.append(loss.item())\n",
    "            \n",
    "    scheduler.step() # 学习率递减"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "negative-stick",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(train_loss, '-', label='train loss')\n",
    "plt.plot(test_loss, '-', label='test loss')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "impressive-intersection",
   "metadata": {},
   "source": [
    "**TODO**:\n",
    "- [ ] 可以尝试对学习率的loss进行可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "maritime-latin",
   "metadata": {},
   "source": [
    "# 建模结果分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "heavy-roberts",
   "metadata": {},
   "outputs": [],
   "source": [
    "model.eval()\n",
    "with torch.no_grad():\n",
    "    var_tx = Variable(x_test.cuda())\n",
    "    var_ty = Variable(y_test.cuda())\n",
    "\n",
    "    out = model(var_tx)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "cooperative-spyware",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(304, 297)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 由于我是用前10天的数据预测后一段时间的数据\n",
    "len(scaler_train_data), len(x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "turned-moore",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_train_preds = model(x_train.cuda()).cpu().detach().numpy().flatten()\n",
    "tmp = np.concatenate([scaler_train_data[:window].flatten(), y_train_preds])\n",
    "tmp[np.abs(tmp) > 1] = 1 # 对预测的异常值进行裁剪\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(scaler_train_data)\n",
    "plt.plot(tmp)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "boxed-birthday",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 测试集的预测走向图\n",
    "y_test_preds = model(x_test.cuda()).cpu().detach().numpy().flatten()\n",
    "tmp = np.concatenate([scaler_test_data[:window].flatten(), y_test_preds])\n",
    "tmp[np.abs(tmp) > 1] = 1 # 对预测的异常值进行裁剪\n",
    "plt.figure()\n",
    "plt.plot(scaler_test_data, label='test')\n",
    "plt.plot(tmp, label='preds')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "motivated-bonus",
   "metadata": {},
   "source": [
    "**为什么到了后面就预测为直线了，因为我是将所有的序列全部输入进去了，神经网络预测的就是整体的趋势，所以变成了一条直线**\n",
    "\n",
    "参考：https://zhuanlan.zhihu.com/p/43783719"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "latin-relaxation",
   "metadata": {},
   "source": [
    "# 模型优化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "southwest-offset",
   "metadata": {},
   "source": [
    "## 开始建模"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "deadly-stephen",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "from torch import optim\n",
    "from torch.utils.data import Dataset, DataLoader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "unexpected-purpose",
   "metadata": {},
   "outputs": [],
   "source": [
    "class MyDataset(Dataset):\n",
    "    def __init__(self, features, labels, transformer=True):\n",
    "        super().__init__()\n",
    "        if transformer:\n",
    "            self.features = torch.tensor(features).float().unsqueeze(dim=-1)\n",
    "            self.labels = torch.tensor(labels).float()\n",
    "        else:\n",
    "            self.features = features.float().squeeze().unsqueeze(dim=-1)\n",
    "            self.labels = labels.float()\n",
    "    \n",
    "    def __getitem__(self, idx):\n",
    "        return self.features[idx], self.labels[idx]\n",
    "    \n",
    "    def __len__(self):\n",
    "        return len(self.labels)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "educated-homework",
   "metadata": {},
   "outputs": [],
   "source": [
    "class LSTM(nn.Module):\n",
    "    def __init__(self, input_dim=1, mid_dim=256, num_classes=1, num_layers=2):\n",
    "        super().__init__()\n",
    "        self.lstm = nn.LSTM(input_dim, mid_dim, num_layers, batch_first=True) # 表示输入维度为1，中间维度为1024， 由3个lstm链接而成\n",
    "        self.linear = nn.Sequential(\n",
    "                nn.Linear(mid_dim, mid_dim),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(mid_dim, num_classes))\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x, _ = self.lstm(x, None)\n",
    "        s, b, h = x.shape\n",
    "        x = x[:, -1, :]\n",
    "        out = self.linear(x)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "spread-humanitarian",
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.01\n",
    "EPOCHS = 500\n",
    "gamma = 0.5\n",
    "step_size = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "finished-hello",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_set = MyDataset(x_train_tensor, y_train_tensor, transformer=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "sixth-granny",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([7, 1])"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_set[0][0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "electronic-acting",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_loader = DataLoader(train_set, batch_size=10, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "anticipated-israeli",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_set = MyDataset(x_test_tensor, y_test_tensor, transformer=False)\n",
    "test_loader = DataLoader(test_set, batch_size=10, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "furnished-beast",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = LSTM().cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "toxic-daily",
   "metadata": {},
   "outputs": [],
   "source": [
    "criterion = nn.MSELoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.8)\n",
    "scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=step_size, gamma=gamma)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "preliminary-surge",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EPOCH:0,Train Loss:8.60428\n",
      "Test Loss:9.35197\n",
      "EPOCH:50,Train Loss:0.00818\n",
      "Test Loss:0.11800\n",
      "EPOCH:100,Train Loss:0.00840\n",
      "Test Loss:0.18051\n",
      "EPOCH:150,Train Loss:0.00026\n",
      "Test Loss:0.21232\n",
      "EPOCH:200,Train Loss:0.00429\n",
      "Test Loss:0.20440\n",
      "EPOCH:250,Train Loss:0.00987\n",
      "Test Loss:0.15880\n",
      "EPOCH:300,Train Loss:0.00646\n",
      "Test Loss:0.28916\n",
      "EPOCH:350,Train Loss:0.00000\n",
      "Test Loss:0.15129\n",
      "EPOCH:400,Train Loss:0.01332\n",
      "Test Loss:0.26070\n",
      "EPOCH:450,Train Loss:0.00542\n",
      "Test Loss:0.24324\n"
     ]
    }
   ],
   "source": [
    "train_loss = []\n",
    "test_loss = []\n",
    "\n",
    "for epoch in range(EPOCHS):\n",
    "    model.train()\n",
    "    for x, y in train_loader:\n",
    "        var_x = x.cuda()\n",
    "        var_y = y.cuda()\n",
    "\n",
    "        out = model(var_x)\n",
    "\n",
    "        loss = criterion(out, var_y)\n",
    "\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "    if epoch % 50 == 0:\n",
    "        print(f'EPOCH:{epoch},Train Loss:{loss.item():.5f}')\n",
    "\n",
    "    train_loss.append(loss.item())\n",
    "    model.eval()\n",
    "    with torch.no_grad():\n",
    "        for x, y in test_loader:\n",
    "            var_tx = x.cuda()\n",
    "            var_ty = y.cuda()\n",
    "\n",
    "            out = model(var_tx)\n",
    "            loss = criterion(out, var_ty)\n",
    "        test_loss.append(loss.item())\n",
    "            \n",
    "    if epoch % 50 == 0:\n",
    "        print(f'Test Loss:{loss.item():.5f}')\n",
    "    \n",
    "    scheduler.step() # 学习率递减"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "catholic-desktop",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(train_loss, label='train loss')\n",
    "plt.plot(test_loss, label='test loss')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "differential-grenada",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(500, 500)"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train_loss), len(test_loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "opposed-utility",
   "metadata": {},
   "source": [
    "## 建模结果可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "combined-gnome",
   "metadata": {},
   "outputs": [],
   "source": [
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "correct-wagon",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 441/441 [00:00<00:00, 1395.23it/s]\n"
     ]
    }
   ],
   "source": [
    "train_preds = []\n",
    "for x in tqdm(x_train_tensor):\n",
    "    x = x.unsqueeze(dim=-1).cuda()\n",
    "    preds = model(x)\n",
    "    train_preds.append(preds.item())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "strong-romania",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(train_preds)\n",
    "plt.plot(y_train_tensor.flatten().tolist())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "closing-passenger",
   "metadata": {},
   "source": [
    "# 参考模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "covered-fifty",
   "metadata": {},
   "outputs": [],
   "source": [
    "class LSTM(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(LSTM, self).__init__()\n",
    "        \n",
    "        self.lstm = nn.LSTM(\n",
    "            input_size=1,   # 输入尺寸为 1，表示一天的数据\n",
    "            hidden_size=64,\n",
    "            num_layers=1, \n",
    "            batch_first=True)\n",
    "        \n",
    "        self.out = nn.Sequential(\n",
    "            nn.Linear(64,1))\n",
    "        \n",
    "    def forward(self, x):\n",
    "        r_out, (h_n, h_c) = self.lstm(x, None)   # None 表示 hidden state 会用全 0 的 state\n",
    "        out = self.out(r_out[:, -1, :])          # 取最后一天作为输出\n",
    "        \n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "changing-china",
   "metadata": {},
   "outputs": [],
   "source": [
    "class TrainSet(Dataset):\n",
    "    def __init__(self, data, label):\n",
    "        # 定义好 image 的路径\n",
    "        # data 取前多少天的数据， label 取最后一天的数据\n",
    "        self.data, self.label = data.float(), label.float()\n",
    "\n",
    "    def __getitem__(self, index):\n",
    "        return self.data[index], self.label[index]\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "mineral-unknown",
   "metadata": {},
   "outputs": [],
   "source": [
    "window = 7 # 设置时间窗口，构造训练集和标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "excessive-chassis",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构造数据集是为了输入到LSTM中\n",
    "x_train, y_train = [], []\n",
    "# 窗口为30表示，用30长度窗口滑动，前30个样本作为特征，后1个样本作为标签\n",
    "for i in range(window, len(train)):\n",
    "    x_train.append(train.values[i-window:i].flatten())\n",
    "    y_train.append(train.values[i].flatten())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "existing-assistant",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_test, y_test = [], []\n",
    "# 窗口为30表示，用30长度窗口滑动，前30个样本作为特征，后1个样本作为标签\n",
    "for i in range(window, len(test)):\n",
    "    x_test.append(test.values[i-window:i, 0].flatten())\n",
    "    y_test.append(test.values[i, 0].flatten())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "id": "chubby-myanmar",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data_numpy = np.array(x_train)\n",
    "train_mean = np.mean(train_data_numpy)\n",
    "train_std  = np.std(train_data_numpy)\n",
    "train_data_numpy = (train_data_numpy - train_mean) / train_std\n",
    "train_data_tensor = torch.Tensor(train_data_numpy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "dense-celebrity",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([441, 7])"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "wound-anderson",
   "metadata": {},
   "outputs": [],
   "source": [
    "label_numpy = np.array(y_train)\n",
    "label_mean = np.mean(label_numpy)\n",
    "label_std  = np.std(label_numpy)\n",
    "label_data_numpy = (label_numpy - label_mean) / label_std\n",
    "labels = torch.Tensor(label_data_numpy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "lovely-section",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([441, 1])"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "accredited-affiliate",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-103-237ea324ac7b>:5: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  self.features = torch.tensor(features).float().unsqueeze(dim=-1)\n",
      "<ipython-input-103-237ea324ac7b>:6: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  self.labels = torch.tensor(labels).float()\n"
     ]
    }
   ],
   "source": [
    "# 创建 dataloader\n",
    "train_set = MyDataset(train_data_tensor, labels)\n",
    "train_loader = DataLoader(train_set, batch_size=10, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "polish-pressure",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = LSTM().cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "bored-chapter",
   "metadata": {},
   "outputs": [],
   "source": [
    "criterion = nn.MSELoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.8)\n",
    "scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=step_size, gamma=gamma)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "id": "pressing-plenty",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EPOCH:0,Train Loss:0.09234\n",
      "Test Loss:2.46865\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zwl/miniconda3/envs/python38_env/lib/python3.8/site-packages/torch/nn/modules/loss.py:445: UserWarning: Using a target size (torch.Size([10, 1, 1])) that is different to the input size (torch.Size([10, 1])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n",
      "/home/zwl/miniconda3/envs/python38_env/lib/python3.8/site-packages/torch/nn/modules/loss.py:445: UserWarning: Using a target size (torch.Size([6, 1, 1])) that is different to the input size (torch.Size([6, 1])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EPOCH:50,Train Loss:0.65940\n",
      "Test Loss:2.77337\n",
      "EPOCH:100,Train Loss:0.37121\n",
      "Test Loss:2.39430\n",
      "EPOCH:150,Train Loss:0.18913\n",
      "Test Loss:2.94967\n",
      "EPOCH:200,Train Loss:0.17024\n",
      "Test Loss:0.85899\n",
      "EPOCH:250,Train Loss:0.22119\n",
      "Test Loss:1.29494\n",
      "EPOCH:300,Train Loss:0.00042\n",
      "Test Loss:0.36902\n",
      "EPOCH:350,Train Loss:0.08135\n",
      "Test Loss:0.88103\n",
      "EPOCH:400,Train Loss:0.02721\n",
      "Test Loss:0.97798\n",
      "EPOCH:450,Train Loss:0.28567\n",
      "Test Loss:0.52971\n"
     ]
    }
   ],
   "source": [
    "train_loss = []\n",
    "test_loss = []\n",
    "\n",
    "for epoch in range(EPOCHS):\n",
    "    model.train()\n",
    "    for x, y in train_loader:\n",
    "        var_x = x.cuda()\n",
    "        var_y = y.cuda()\n",
    "\n",
    "        out = model(var_x)\n",
    "\n",
    "        loss = criterion(out, var_y)\n",
    "\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "    if epoch % 50 == 0:\n",
    "        print(f'EPOCH:{epoch},Train Loss:{loss.item():.5f}')\n",
    "\n",
    "    train_loss.append(loss.item())\n",
    "    model.eval()\n",
    "    with torch.no_grad():\n",
    "        for x, y in test_loader:\n",
    "            var_tx = x.cuda()\n",
    "            var_ty = y.cuda()\n",
    "\n",
    "            out = model(var_tx)\n",
    "            loss = criterion(out, var_ty)\n",
    "        test_loss.append(loss.item())\n",
    "            \n",
    "    if epoch % 50 == 0:\n",
    "        print(f'Test Loss:{loss.item():.5f}')\n",
    "    \n",
    "    scheduler.step() # 学习率递减"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "id": "responsible-vessel",
   "metadata": {},
   "outputs": [],
   "source": [
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "warming-vacuum",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 441/441 [00:00<00:00, 2064.71it/s]\n"
     ]
    }
   ],
   "source": [
    "generate_train_data = []\n",
    "generate_test_data = []\n",
    "for x in tqdm(train_data_tensor):\n",
    "    x = x.unsqueeze(dim=-1).unsqueeze(dim=0).cuda()\n",
    "    train_preds = model(x)\n",
    "    generate_train_data.append(train_preds.item())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "id": "canadian-brighton",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(generate_train_data, label='train preds')\n",
    "plt.plot(labels, label='real')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "funky-victorian",
   "metadata": {},
   "source": [
    "# 完整代码"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "latin-spell",
   "metadata": {},
   "source": [
    "## 数据处理 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "sustained-alloy",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要模块\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "import pickle\n",
    "import gc\n",
    "import datetime\n",
    "import time\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "flying-spray",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "from torch import optim\n",
    "from torch.utils.data import Dataset, DataLoader\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "prime-learning",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 可以发现不管是week，还是month ，all数据，字典都是这种结构，所以可以写成函数的形式\n",
    "def data_process(data):\n",
    "    Users, Volume, Transactions = [], [], []\n",
    "    Position = data['xaxis']\n",
    "    data = data['series']\n",
    "    for i in data:\n",
    "        if i['name'] == 'Users':\n",
    "            Users.extend(i['data'])\n",
    "        elif i['name'] == 'Volume':\n",
    "            Volume.extend(i['data'])\n",
    "        else:\n",
    "            Transactions.extend(i['data'])\n",
    "    \n",
    "    return Users, Volume, Transactions, Position\n",
    "\n",
    "# 对日期进行排序\n",
    "def get_rank_data(users, volumn, transaction, position):\n",
    "    dic = dict(zip(position, range(len(position))))\n",
    "    p = []\n",
    "    for i in sorted(dic):\n",
    "        p.append(dic[i])\n",
    "    users = np.asarray(users)[p].tolist()\n",
    "    volumn = np.asarray(volumn)[p].tolist()\n",
    "    transaction = np.asarray(transaction)[p].tolist()\n",
    "\n",
    "    return users, volumn, transaction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "secondary-oxford",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据读取和处理\n",
    "week = pickle.load(open('./data/week.pkl', 'rb'))\n",
    "month = pickle.load(open('./data/month.pkl', 'rb'))\n",
    "all_ = pickle.load(open('./data/all_.pkl', 'rb'))\n",
    "\n",
    "week_users, week_volume, week_transactions, week_position = data_process(week)\n",
    "month_users, month_volume, month_transactions, month_position = data_process(month)\n",
    "all_users, all_volume, all_transactions, all_position = data_process(all_)\n",
    "\n",
    "week_users, week_volume, week_transactions = get_rank_data(week_users, week_volume, week_transactions, week_position)\n",
    "month_users, month_volume, month_transactions = get_rank_data(month_users, month_volume, month_transactions, month_position)\n",
    "all_users, all_volume, all_transactions = get_rank_data(all_users, all_volume, all_transactions, all_position)\n",
    "\n",
    "# 没有用的变量可以删掉，避免占用内存\n",
    "del week, month, all_, week_position, month_position, all_position; gc.collect()\n",
    "\n",
    "# 因为没有时间，所以这里针对数据创建时间\n",
    "date = pd.date_range('2019-9-17', '2021-3-30', freq='D') # 生成30号一共561个数据\n",
    "\n",
    "# 创建pandas对象\n",
    "df = pd.DataFrame({\n",
    "    'transactions':all_transactions,\n",
    "    'date':date\n",
    "})\n",
    "\n",
    "df = df.set_index(df.date)\n",
    "del df['date']\n",
    "\n",
    "data = df.sort_index(ascending=True, axis=0) # 按时间进行排序，虽然数据前面已经处理好了\n",
    "\n",
    "# 训练集和测试集的划分\n",
    "train, test = train_test_split(data, test_size=0.2, shuffle=False) # 因为默认shuffle是打乱，这里设置为False"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "planned-strain",
   "metadata": {},
   "source": [
    "## 数据转换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "vietnamese-kernel",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据归一化，不然loss降不下来\n",
    "window = 7 # 设置时间窗口，构造训练集和标签\n",
    "\n",
    "# 构造数据集是为了输入到LSTM中\n",
    "x_train, y_train = [], []\n",
    "# 窗口为30表示，用30长度窗口滑动，前30个样本作为特征，后1个样本作为标签\n",
    "for i in range(window, len(train)):\n",
    "    x_train.append(train.values[i-window:i].flatten())\n",
    "    y_train.append(train.values[i].flatten())\n",
    "    \n",
    "x_test, y_test = [], []\n",
    "# 窗口为30表示，用30长度窗口滑动，前30个样本作为特征，后1个样本作为标签\n",
    "for i in range(window, len(test)):\n",
    "    x_test.append(test.values[i-window:i, 0].flatten())\n",
    "    y_test.append(test.values[i, 0].flatten())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "white-commission",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_numpy = np.array(x_train)\n",
    "train_mean = np.mean(train_numpy)\n",
    "train_std  = np.std(train_numpy)\n",
    "train_numpy = (train_numpy - train_mean) / train_std\n",
    "train_tensor = torch.Tensor(train_numpy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "later-thousand",
   "metadata": {},
   "outputs": [],
   "source": [
    "label_numpy = np.array(y_train)\n",
    "label_mean = np.mean(label_numpy)\n",
    "label_std  = np.std(label_numpy)\n",
    "label_numpy = (label_numpy - label_mean) / label_std\n",
    "train_labels = torch.Tensor(label_numpy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "western-language",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_numpy = np.array(x_test)\n",
    "test_mean = np.mean(test_numpy)\n",
    "test_std  = np.std(test_numpy)\n",
    "test_numpy = (test_numpy - test_mean) / test_std\n",
    "test_tensor = torch.Tensor(test_numpy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "gentle-cycling",
   "metadata": {},
   "outputs": [],
   "source": [
    "label_numpy = np.array(y_test)\n",
    "label_mean = np.mean(label_numpy)\n",
    "label_std  = np.std(label_numpy)\n",
    "label_numpy = (label_numpy - label_mean) / label_std\n",
    "test_labels = torch.Tensor(label_numpy)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "secure-coordinate",
   "metadata": {},
   "source": [
    "## 建立模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "built-montreal",
   "metadata": {},
   "outputs": [],
   "source": [
    "# class LSTM(nn.Module):\n",
    "#     def __init__(self, input_dim=1, mid_dim=256, num_classes=1, num_layers=2):\n",
    "#         super().__init__()\n",
    "#         self.lstm = nn.LSTM(input_dim, mid_dim, num_layers, batch_first=True) # 表示输入维度为1，中间维度为1024， 由3个lstm链接而成\n",
    "#         self.linear = nn.Sequential(\n",
    "#                 nn.Linear(mid_dim, mid_dim),\n",
    "#                 nn.ReLU(),\n",
    "#                 nn.Linear(mid_dim, num_classes))\n",
    "        \n",
    "#     def forward(self, x):\n",
    "#         x, _ = self.lstm(x, None)\n",
    "#         s, b, h = x.shape\n",
    "#         x = x[:, -1, :]\n",
    "#         out = self.linear(x)\n",
    "#         return out\n",
    "class LSTM(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(LSTM, self).__init__()\n",
    "        \n",
    "        self.lstm = nn.LSTM(\n",
    "            input_size=1,   # 输入尺寸为 1，表示一天的数据\n",
    "            hidden_size=64,\n",
    "            num_layers=1, \n",
    "            batch_first=True)\n",
    "        \n",
    "        self.out = nn.Sequential(\n",
    "            nn.Linear(64,1))\n",
    "        \n",
    "    def forward(self, x):\n",
    "        r_out, (h_n, h_c) = self.lstm(x, None)   # None 表示 hidden state 会用全 0 的 state\n",
    "        out = self.out(r_out[:, -1, :])          # 取最后一天作为输出\n",
    "        \n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "fixed-payday",
   "metadata": {},
   "outputs": [],
   "source": [
    "class MyDataset(Dataset):\n",
    "    def __init__(self, features, labels, transformer=True):\n",
    "        super().__init__()\n",
    "        if transformer:\n",
    "            self.features = torch.tensor(features).float().unsqueeze(dim=-1)\n",
    "            self.labels = torch.tensor(labels).float()\n",
    "        else:\n",
    "            self.features = features.float().squeeze().unsqueeze(dim=-1)\n",
    "            self.labels = labels.float()\n",
    "    \n",
    "    def __getitem__(self, idx):\n",
    "        return self.features[idx], self.labels[idx]\n",
    "    \n",
    "    def __len__(self):\n",
    "        return len(self.labels)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "creative-passage",
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.01\n",
    "EPOCHS = 500\n",
    "gamma = 0.5\n",
    "step_size = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "harmful-boulder",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_set = MyDataset(train_tensor, train_labels, transformer=False)\n",
    "train_loader = DataLoader(train_set, batch_size=10, shuffle=True)\n",
    "test_set = MyDataset(test_tensor, test_labels, transformer=False)\n",
    "test_loader = DataLoader(test_set, batch_size=10, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "collect-ribbon",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = LSTM().cuda()\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.8)\n",
    "scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=step_size, gamma=gamma)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "handed-receiver",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EPOCH:0,Train Loss:0.05795\n",
      "Test Loss:1.87113\n",
      "EPOCH:50,Train Loss:0.27477\n",
      "Test Loss:0.54276\n",
      "EPOCH:100,Train Loss:0.00255\n",
      "Test Loss:1.45956\n",
      "EPOCH:150,Train Loss:0.07736\n",
      "Test Loss:1.78276\n",
      "EPOCH:200,Train Loss:0.00870\n",
      "Test Loss:2.95642\n",
      "EPOCH:250,Train Loss:0.19664\n",
      "Test Loss:1.28106\n",
      "EPOCH:300,Train Loss:0.91590\n",
      "Test Loss:2.08889\n",
      "EPOCH:350,Train Loss:0.00033\n",
      "Test Loss:2.48318\n",
      "EPOCH:400,Train Loss:0.02036\n",
      "Test Loss:2.58839\n",
      "EPOCH:450,Train Loss:0.01134\n",
      "Test Loss:2.11029\n"
     ]
    }
   ],
   "source": [
    "train_loss = []\n",
    "test_loss = []\n",
    "\n",
    "for epoch in range(EPOCHS):\n",
    "    model.train()\n",
    "    for x, y in train_loader:\n",
    "        var_x = x.cuda()\n",
    "        var_y = y.cuda()\n",
    "\n",
    "        out = model(var_x)\n",
    "\n",
    "        loss = criterion(out, var_y)\n",
    "\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "    if epoch % 50 == 0:\n",
    "        print(f'EPOCH:{epoch},Train Loss:{loss.item():.5f}')\n",
    "\n",
    "    train_loss.append(loss.item())\n",
    "    model.eval()\n",
    "    with torch.no_grad():\n",
    "        for x, y in test_loader:\n",
    "            var_tx = x.cuda()\n",
    "            var_ty = y.cuda()\n",
    "\n",
    "            out = model(var_tx)\n",
    "            loss = criterion(out, var_ty)\n",
    "        test_loss.append(loss.item())\n",
    "            \n",
    "    if epoch % 50 == 0:\n",
    "        print(f'Test Loss:{loss.item():.5f}')\n",
    "    \n",
    "    scheduler.step() # 学习率递减"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "thorough-spoke",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(train_loss, label='train loss')\n",
    "plt.plot(test_loss, label='test loss')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "ordered-chapel",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([7])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_tensor[0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "premium-panama",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 441/441 [00:00<00:00, 2228.91it/s]\n"
     ]
    }
   ],
   "source": [
    "train_preds = []\n",
    "for x in tqdm(train_tensor):\n",
    "    x = x.unsqueeze(dim=-1).unsqueeze(dim=0).cuda()\n",
    "    preds = model(x)\n",
    "    train_preds.append(preds.item())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "vital-birthday",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(train_preds, '.-', label='preds', alpha=0.5)\n",
    "plt.plot(train_labels, '.-', label='real', alpha=0.5)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "pleased-hampton",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 106/106 [00:00<00:00, 1708.71it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_preds = []\n",
    "for x in tqdm(test_tensor):\n",
    "    x = x.unsqueeze(dim=-1).unsqueeze(dim=0).cuda()\n",
    "    preds = model(x)\n",
    "    test_preds.append(preds.item())\n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "structural-prison",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(test_preds, '.-', label='preds', alpha=0.7)\n",
    "plt.plot(test_labels, '.-', label='real', alpha=0.7)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "psychological-rwanda",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.8.0 64-bit ('python38_env': conda)",
   "language": "python",
   "name": "python38064bitpython38envcondac66e67a9f62b441c8e431c587206823e"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
